10的n(n>1)次方阶乘后面0的个数 有什么规律?

来源:百度知道 编辑:UC知道 时间:2024/06/25 02:30:20
10的n(n>1)次方阶乘后面0的个数 有什么规律?
10^2 阶乘的后面0的个数是24
10^3 阶乘的后面0的个数是249
10^4 阶乘的后面0的个数是2499
10^5 阶乘的后面0的个数是24999
10^6 阶乘的后面0的个数是249998
10^7 阶乘的后面0的个数是2499999
10^8 阶乘的后面0的个数是24999999
10^9 阶乘的后面0的个数是249999998
10^10阶乘的后面0的个数是2499999999
。。。。。。。。。。。。。。。。
惊人的发现前面测试除了10^6! 10^9!
其余的结果均为
10^n/4-1
而两个例外的10^6 10^9
若仅此而推10^12尾数为8则又不成立 10^12!后面0的个数是10^12/4-1
但是这里的结果又惊人的相似
不只有何科学道理?请高手解答
下面是本人写java的实现程序(此程序我只测定10^9),如要测试建议用C(此程序本人测到10^14)
//File Name:Factorial_zero.java
package arithmetic;

public class Factorial_zero{
long n;
long sum;
Factorial_zero(long tempN){
n = tempN;
sum = 0;
}
void SetN(long tempN){
n = tempN;
}
public void Calculate(){
long tempN,i;
for(tempN = 1;tempN <= n;tempN++){
i = tempN;
while((i%5)==0){
sum++;
i = i/5;
}
}
System.out.pri

那是因为我累加的那一步没有取整,sorry,你的算法精确到每一个可以被5除的数,所以没有小数部分哦。
这个规律就是我说的那个公式哦,如果不看取整,则是一个等比数列,你整理以下就可以了。不过由于分母的次数我们无法确定,所以我们不能得出一个通式,第推公式倒是有可能。

记num=10^n,则0的个数为:num/5+num/(5^2)+num/(5^3)+......
直到num < 5^m。
按照这个思路,程序其实很短:
public class Test{

public static void main(String[] args){
for(int i = 2; i <= 15; i++){
long num = (long) Math.pow(10, i);
long div = 5;
long sum = 0;
while(div <= num){
sum += num/div;
div *= 5;
}
System.out.println(sum);
}
}
}